package DARP;

import java.util.LinkedList;


public class EstruturaVizinhaca {

	public LinkedList reordenarRota(LinkedList rota){
		int elementoRandomica = (int) ( 1 + (Math.random() * rota.size()));
		
		
		return null;
	}
	
	public LinkedList realocaRota(LinkedList rota1,LinkedList rota2 ){
		int elementoRandomica = (int) ( 1 + (Math.random() * rota1.size()));
		int elementoEntra = (Integer) rota1.get(elementoRandomica);
		int elementoSai = (Integer) rota1.get(2*elementoRandomica);
		rota1.remove(elementoEntra);
		rota1.remove(elementoSai);
		
		rota2.add(elementoEntra);
		rota2.add(elementoSai);
		return null;
	}

	public LinkedList trocaPontos(LinkedList rota1,LinkedList rota2 ){
		int elementoRandomica = (int) ( 1 + (Math.random() * rota1.size()));
		int elementoEntra = (Integer) rota1.get(elementoRandomica);
		int elementoSai = (Integer) rota1.get(2*elementoRandomica);
		rota1.remove(elementoEntra);
		rota1.remove(elementoSai);
		
		rota2.add(elementoRandomica,elementoEntra);
		rota2.add(elementoRandomica,elementoSai);
		
		return null;
		
	}
	
	public void realocaBlocosEmbarque(LinkedList rota){
		LinkedList aInverter = null;
		Integer elemento = 0;
		int count = 0, idDesembarque = (Data.quantidadeVeiculos + 1);
		elemento = (Integer) rota.get(count);
		
		do{
			aInverter.addFirst(elemento);
			rota.remove(count);
			count++;
			elemento = (Integer) rota.get(count);
		}
		while(elemento < idDesembarque);
		
		do{
			rota.addFirst(aInverter.get(count));
		}while(count-->0);
	}
	
//	public LinkedList getVizinho() {
//		try {
//			Rota s = (Solution) clone();
//			int op = (Math.random() < 0.5) ? 0 : 1;
//			switch (op) {
//				case 0 :
//					s.intra();
//					break;
//				case 1 :
//					s.inter();
//					break;
//			}
//			return s;
//		} catch (CloneNotSupportedException cnse) {
//			cnse.printStackTrace();
//		}
//		return null;
//	}
	
}